﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms; using Montana.Entidades;


namespace Montana
{
    public class Validacion
    {
        public static bool EstaVacio(ListView lista, TextCustom textFoco, string mensaje)
        {
            if (lista.Items.Count == 0)
            {
                MostrarError(textFoco, mensaje);
                return true;
            }

            return false;
        }

        public static bool EstaVacio(TextBox text, string mensaje)
        {
            if (text.Text.Trim() == "")
            {
                MostrarError(text, mensaje);
                return true;
            }

            return false;
        }

        public static bool EstaVacio(MaskCustom mask, string mensaje)
        {
            if (mask.Text.Replace("/","").Replace(" ","").Trim() == "")
            {
                MostrarError(mask, mensaje);
                return true;
            }

            return false;
        }

        public static bool EstaVacio(ComboBox combo, string mensaje)
        {
            if (combo.Text == "")
            {
                MostrarError(combo, mensaje);
                return true;
            }

            return false;
        }

        public static bool ValFecha(MaskCustom mask, string mensaje)
        {
            DateTime aux;
            
            if (!DateTime.TryParse(mask.Text, out aux))
            {
                MostrarError(mask, mensaje);
                return true;
            }

            return false;
        }

        public static void MostrarError(Control control, string mensaje)
        {
            MostrarMensaje(mensaje);
            control.Focus();
        }

        public static DialogResult MostrarMensaje(string mensaje)
        {
            return MostrarMensaje(mensaje, TipoMensaje.Validacion);
        }

        public static DialogResult MostrarMensaje(string mensaje, TipoMensaje tipo)
        {
            DialogResult res = DialogResult.OK;

            switch (tipo)
            {
                case TipoMensaje.Validacion:
                    res = MessageBox.Show(mensaje, Sistema.NombreVesion, MessageBoxButtons.OK, MessageBoxIcon.Information); 
                    break;
                case TipoMensaje.Error:
                    res = MessageBox.Show(mensaje, Sistema.NombreVesion, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;
                case TipoMensaje.Pregunta:
                    res = MessageBox.Show(mensaje, Sistema.NombreVesion, MessageBoxButtons.YesNo, MessageBoxIcon.Question,  MessageBoxDefaultButton.Button2);
                    break;
            }

            return res;
        }

        public static int GetValue(ComboCustom combo)
        {
            if (combo.SelectedIndex == -1 || combo.SelectedValue == null || combo.SelectedValue.ToString() == "")
                return 0;

            return (int)combo.SelectedValue;
        }

        public static decimal ValDecimal(string valor)
        {
            if (valor.Trim() == "")
                return 0;

            return decimal.Parse(valor.Replace(".", ","));
        }

        public static decimal ValDecimal(TextCustom text)
        {
            return ValDecimal(text.Text);
        }

        public static Single ValSingle(string valor)
        {
            if (valor.Trim() == "")
                return 0;

            return Single.Parse(valor.Replace(".", ","));
        }

        public static Single ValSingle(TextCustom text)
        {
            return ValSingle(text.Text);
        }

        public static string ValPrecio(TextCustom text)
        {
            return text.Text.Replace(".",",");
        }

        public static int ValInt(System.Windows.Forms.ListViewItem.ListViewSubItem item)
        {
            return int.Parse(item.Text);

        }

        public static decimal ValDecimal(ListViewItem.ListViewSubItem item)
        {
            return ValDecimal(item.Text);
        }

        public static DateTime ValFecha(ListViewItem.ListViewSubItem item)
        {
            return DateTime.Parse(item.Text);
        }

        public static DateTime ValFecha(MaskCustom text)
        {
            return DateTime.Parse(text.Text);
        }
    }

    public enum TipoMensaje
    {
        Validacion,
        Error,
        Pregunta
    }
}
